package com.yourenbang.lingyun.transaction.web.service.fund;

import com.yourenbang.lingyun.core.message.Result;
import com.yourenbang.lingyun.domain.FundAccount;
import com.yourenbang.lingyun.transaction.web.domain.dto.fund.*;
import com.yourenbang.lingyun.transaction.web.domain.vo.fund.AccountQueryGroupVO;
import com.yourenbang.lingyun.transaction.web.domain.vo.fund.AccountQueryVO;
import com.yourenbang.lingyun.transaction.web.domain.vo.fund.AllyHomePageVO;
import com.yourenbang.lingyun.transaction.web.domain.vo.fund.MerAccountQueryGroupVO;
import com.yourenbang.transaction.api.model.dto.AddAccountDTO;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * 账户服务
 */
public interface AccountService {

    /**
     * 创建资金账户
     * @param dto
     * @return
     */
    Result<FundAccount> addAccount(AddAccountDTO dto);

    /**
     * 用户账户查询
     */
    Result<AccountQueryVO> queryAccount(AccountQueryDTO accountQueryDTO);

    /**
     * 盟友账户查询
     */
    Result<AccountQueryGroupVO> queryAccountGroup(AccountQueryDTO accountQueryDTO);
    /**
     * 盟友账户查询 新版，添加了余额展示
     */
    Result<AccountQueryGroupVO> queryAccountGroupV2(AccountQueryDTO accountQueryDTO);

    /**
     * 商户账户查询
     */
    Result<MerAccountQueryGroupVO> queryMerAccountGroup(MerAccountQueryDTO accountQueryDTO);

    /**
     * 商户账户查询(快收查凌云)
     */
    Result<MerAccountQueryGroupVO> queryMerAccountGroupFromKlks(MerAccountQueryKlksDTO accountQueryDTO);

    /**
     * 用户账户查询(快收查凌云)
     */
    Result<String> queryAccountFromKlks(@RequestBody String param);

    /**
     * 用户账户批量查询(快收查凌云)
     */
    Result<String> batchQueryAccountFromKlks(@RequestBody String param);

    /**
     * 快收用户账户查询
     */
    Result<AccountQueryVO> queryAllKlks(KlksAccountQueryDTO accountQueryDTO);

    /**
     * 快收用户账户查询转发
     */
    Result<String> queryAllKlksForward(@RequestBody String param);

    /**
     * 盟友首页收益
     */
    Result<AllyHomePageVO> allyHomePage(@RequestBody AllyHomePageDTO allyHomePageDTO);

    /**
     * 快收盟友首页收益
     */
    Result<AllyHomePageVO> allyHomePageFromKlks(@RequestBody KlksAllyHomePageDTO klksAllyHomePageDTO);

    /**
     * 查询盟友账户列表
     * @param data 入参
     * @return 盟友的账户列表
     */
    Result<List<AllyAccountVO>> queryAllyAccountList(AccountQueryDTO data);
}
